import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';



async function bootstrap() {
  const app = await NestFactory.create(AppModule);


  //Swagger 是一个使用 OpenAPI 规范记录 API 的工具
  const config = new DocumentBuilder()
  .setTitle('Median')
  .setDescription('The Median API description')
  .setVersion('0.1')
  .build();

  //SwaggerModule 搜索了路由处理器中的所有请求相关的装饰器，生成API页面。
  const document = SwaggerModule.createDocument(app, config); 
  SwaggerModule.setup('api', app, document);
  //end



  await app.listen(3000);
}
bootstrap();


/*创建步骤
DATABASE_URL="mysql://root:zjhQQsybzd@localhost:3306/prisma"

1.pnpm install -D prisma @prisma/client
2.npx prisma init
3.定义.env连接配置 和 prisma/schema.prisma数据模型
4.npx prisma migrate dev --name 0_1_xxx 将模型同步到数据库

pnpm install --save @nestjs/swagger swagger-ui-express
npx prisma db seed 
*/


/*常用命令
打开webgui:  npx prisma studio
查看迁移状态:  npx prisma migrate status  
从数据库中拉取最新的数据库定义: npx prisma db pull (会更新prisma/schema.prisma 文件)
将模型同步到数据库: npx prisma db push (修改了模型定义,可执行此命令。)
回滚到最新一次迁移文件: npx prisma migrate reset
*/


/*npx prisma migrate dev --name 0_1_newking  如果你更改了数据库结构,建议执行该命令。

如果你新增了表,或者新增或删除了字段,建议执行迁移命令（方便回滚,记得备份）

所以，如果你正在开始一个新项目，并且已经定义了数据模型。
我们建议你立即执行一次 npx prisma migrate dev 命令来
创建第一个迁移文件并将数据模型应用到数据库中。

另外,迁移成功后，Prisma 会自动创建一个名为 migration_lock 的表，
以跟踪数据库结构的版本和已应用的迁移文件。
*/








/*

----------------------------------------------------------------------------------------------------
4.创建迁移目录(类似于版本备份?)
mkdir -p prisma/migrations/0_init
5.生成迁移脚本
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql
6.迁移标记为已应用
npx prisma migrate resolve --applied 0_init
----------------------------------------------------------------------------------------------------

*/